<?php
declare (strict_types = 1);

namespace app\model\communal;

use app\model\concern\AmisTrait;
use app\model\concern\LogTrait;
use think\Model;
use think\db\Query;
use think\model\relation\BelongsTo;

class OrderConsultRefundLogModel extends Model
{
    use AmisTrait, LogTrait;

    /**
     * 日志类型
     */
    const LOG_TYPE_ONE = 1;
    const LOG_TYPE_TWO = 2;
    const LOG_TYPE_THREE = 3;
    const LOG_TYPE_FOUR = 4;

    /**
     * 日志类型映射
     *
     * @var string[]
     */
    public static $logTypeMap = [
        self::LOG_TYPE_ONE => '发起退款申请',
        self::LOG_TYPE_TWO => '审核驳回',
        self::LOG_TYPE_THREE => '审核通过',
        self::LOG_TYPE_FOUR => '退款成功',
    ];

    /**
     * 数据库配置
     *
     * @var string
     */
    protected $connection = 'communal';

    /**
     * 主键
     *
     * @var string
     */
    protected $pk = 'id';

    /**
     * 表名
     *
     * @var string
     */
    protected $table = '50202_order_consult_refund_log';

    /**
     * 设置json类型字段
     *
     * @var string[]
     */
    protected $json = ['log_json'];

    /**
     * 设置JSON数据返回数组
     *
     * @var bool
     */
    protected $jsonAssoc = true;

    /**
     * 自动时间戳
     *
     * @var bool
     */
    protected $autoWriteTimestamp = true;

    /**
     * 时间字段设置
     *
     * @var string
     */
    protected $createTime = 'created_at';

    /**
     * 展示字段名
     *
     * @var string[]
     */
    public static $column = [
        'id', 'operator', 'order_consult_id', 'order_consult_refund_id', 'log_json', 'log_type', 'created_at'
    ];

    /**
     * 搜索字段名
     *
     * @var string[]
     */
    public static $searchColumn = [
        'id', 'order_consult_id', 'order_consult_refund_id', 'log_type', 'createtime'
    ];

    /**
     * 新增字段
     *
     * @var string[]
     */
    public static $saveColumn = [
        'order_consult_id', 'order_consult_refund_id', 'log_json', 'log_type',
    ];

    /**
     * order_consult_id 搜索
     *
     * @param Query $query
     * @param $value
     */
    public function searchOrderConsultIdAttr(Query $query, $value)
    {
        if (!is_null($value) && strlen((string)$value) > 0) {
            $query->where('order_consult_id', $value);
        }
    }
}
